<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    


    
    <script>

        // 栈  简单数据类型存放在栈里面 ，所有简单类型的变量都存放在栈里面(包括全局变量，局部变量)

        //堆   复杂数据类型的数据  存放堆里面  但在栈里面有一个堆的地址值

        // 简单数据类型赋值的时候是复制的值， 复杂类型赋值复制的是地址值


        //数据的引用
        //简单数据传递
        var name1='trump'
        var name2=name1
            name1='biben'   
        console.log('name1==>',name1,'name2==>',name2);
        //简单数据赋值不会改变原来的数据



        //数组赋值
        var arr=[10,20,30]
        var arr2=arr
            arr[1]=100
        console.log('arr==>',arr,'arr2==>',arr2);
        //因为数组是复杂的数据类型,所以赋值会改变原来的数据


        //对象赋值
        var person1={
            name:'trump',
            age:60
        }
        var person2=person1
        person2.name='biben'
        console.log('p1==>',person1.name,'p2==>',person2.name);
         //因为对象是复杂的数据类型,所以赋值会改变原来的数据

        //函数传递
        var car1={   //匿名函数   把函数设置成一个变量  然后进行参数传递另一个函数
            logo:'奔驰'
        }
        function drive(car)
        {
            console.log('改变之前',car.logo);
            car.logo='宝马'
            console.log('改变之后',car.logo);
        }
        drive(car1)
        console.log("函数外部调用logo=>",car1.logo);

    </script>
</body>
</html>